home *** CD-ROM | disk | FTP | other *** search
/ Space Shuttle - The First 100 Flights / Space Shuttle - The First 100 Flights.iso / xTras / DirectMedia Xtra Behaviors.cst / 00008_Script_Video Slider < prev    next >
Text File  |  2000-01-16  |  6KB  |  191 lines

  1. -- DirectMedia Xtra Time Slider
  2.  
  3.  
  4. -- based on the Video Time Slider from the behavior library version 1.1
  5. -- Control
  6.  
  7. -- requires an 'extent' cast member 
  8. -- that limits the range the slider 'slides'
  9. -- controls the currenttime of a DirectMedia Xtra sprite,
  10. -- if the sprite is playing the slider moves automatically
  11.  
  12.  
  13.  
  14. property pDuration, pMovieTime, VideoSprite
  15.  
  16. property extentSprite
  17. property hiliteMember  -- looks like the handle plus hilite graphics
  18. -- also holds the member of handle while hilited
  19.  
  20. property tracking
  21. property newLocH
  22. property newLocV
  23.  
  24. property dynamic   -- if true and sending true, sends value while tracking
  25.  
  26. property min, max  -- the range the slider maps to
  27. property valrange  -- the difference of max and min, set on begin
  28. property minScreen, maxScreen -- calculated from the screen coords of the extent
  29. property currentScreenVal -- the data point in screen coords, set in tracking
  30. property extentlength -- in screen coords, set on begin
  31.  
  32. property CurrentVal
  33.  
  34. on getPropertyDescriptionList
  35.   if the currentspritenum = 0 then 
  36.     set memdefault = 0 
  37.   else
  38.     set memref = the member of sprite the currentspritenum
  39.     set memdefault = member (the membernum of member memref + 1) 
  40.   end if
  41.   
  42.   
  43.   set description = [:]
  44.   
  45.   addprop description, #VideoSprite, [#default: 1, #format:#integer, #comment: "Video Sprite:"]
  46.   
  47.   addprop description, #extentSprite, [#default: 1, #format:#integer, #comment: "Extent Sprite:"]
  48.   
  49.   addprop description, #hiliteMember, [#default: memdefault , #format:#graphic,#comment: "Hilite Member:"]
  50.   
  51.   
  52.   addprop description, #dynamic, [#default: 1, #format:#boolean,#comment: "Dynamic:"]
  53.   
  54.   return description
  55. end
  56.  
  57. on getBehaviorDescription
  58.   return "Drag to slider 'handle' to enable control of video play time.  Requires additional 'extent' member which limits the handle travel range." & RETURN & "PARAMETERS:" & RETURN & "ò Video Sprite - Enter the number of sprite channel in which video is displayed." & RETURN & "ò Extent Sprite -  Enter the number of sprite channel that contains the 'extent' sprite."  & RETURN & "ò Hilite Member -  Member to display while handle is being dragged."  & RETURN & "ò Dynamic - If set, video time will be updated while handle is dragged, else when handle is released."
  59. end
  60.  
  61. on compute_val me
  62.   -- relies on tracking to update the currentScreenVal (different for Hor, Vert)
  63.   set val = 0.0
  64.   set val = float(the currentScreenVal of me) / float (the extentlength of me)
  65.   set val = val * the valrange of me
  66.   set val = val + the min of me
  67.   return val
  68. end
  69.  
  70. on send_the_val me, val
  71.   -- sets the digital video time to the val * paramter {0 - movieduration}
  72.   set pMovieTime = val * pDuration
  73.   videoseek(sprite VideoSprite, pMovieTime)
  74.   
  75. end
  76.  
  77.  
  78. on beginSprite me
  79.   
  80.   set pDuration = the duration of sprite VideoSprite
  81.   
  82.   set the min of me = 0.0
  83.   set the max of me = 1.0
  84.   
  85.   --
  86.   set handle = the spritenum of me
  87.   set the tracking of me = FALSE
  88.   set the newLocH of me = the locH of sprite handle
  89.   set the newLocV of me = the locV of sprite handle
  90.   
  91.   
  92.   set the newLocV of me = the locV of sprite the extentSprite of me
  93.   set the minScreen of me = the left of sprite the extentSprite of me
  94.   set the maxScreen of me = the right of sprite the extentSprite of me
  95.   
  96.   
  97.   set the locH of sprite handle to the newLocH of me
  98.   set the locV of sprite handle to the newLocV of me
  99.   
  100.   set the valrange of me = the max of me - the min of me
  101.   set the extentlength of me = the maxScreen of me - the minScreen of me
  102.   
  103. end
  104.  
  105. on prepareFrame me
  106.   -- limits motion of handle to extents of extentSprite
  107.   -- and locks the handle to the track of the extentSprite
  108.   
  109.   if tracking then
  110.     set handle = the spriteNum of me
  111.     set extent =  the extentSprite of me
  112.     
  113.     
  114.     set the newLocH of me = the mouseH
  115.     set the newLocV of me = the locV of sprite extent
  116.     if the newLocH of me < the left of sprite extent then
  117.       set the newLocH of me = the left of sprite extent
  118.     end if
  119.     if the newLocH of me > the right of sprite extent then
  120.       set the newLocH of me = the right of sprite extent
  121.     end if
  122.     
  123.     set the currentScreenVal of me = the newLocH of me - the minScreen of me
  124.     
  125.     
  126.     set the locH of sprite handle to the newLocH of me
  127.     set the locV of sprite handle to the newLocV of me
  128.     
  129.     if the dynamic of me then
  130.       send_the_val me, compute_val (me)
  131.     end if
  132.     
  133.   else   --  end if tracking, control slider position by movieTime
  134.     
  135.     if (float(pDuration)=0) then
  136.       set pDuration = the duration of sprite VideoSprite
  137.     end if
  138.     
  139.     if (float(pDuration)<>0) then
  140.       set x = float(the currenttime of sprite VideoSprite)/ float(pDuration)
  141.     end if
  142.     
  143.     set handle = the spriteNum of me
  144.     set extent =  the extentSprite of me
  145.     
  146.       set ScreenX = the left of sprite extent + (x * (the right of sprite extent - the left of sprite extent))
  147.       set the newLocH of me = screenX
  148.       set the newLocV of me = the locV of sprite extent
  149.       if the newLocH of me < the left of sprite extent then
  150.         set the newLocH of me = the left of sprite extent
  151.       end if
  152.       if the newLocH of me > the right of sprite extent then
  153.         set the newLocH of me = the right of sprite extent
  154.       end if
  155.       
  156.       set the currentScreenVal of me = the newLocH of me - the minScreen of me
  157.       
  158.     set the locH of sprite handle to the newLocH of me
  159.     set the locV of sprite handle to the newLocV of me
  160.     
  161.   end if
  162.   
  163.   
  164. end
  165.  
  166. on mouseDown me 
  167.   set tracking = TRUE
  168.   set temp = the member of sprite the spritenum of me
  169.   set the member of sprite the spritenum of me = member the hiliteMember of me
  170.   set the hiliteMember of me = temp
  171. end
  172.  
  173. on mouseUp me
  174.   set tracking = FALSE
  175.   set temp = the member of sprite the spritenum of me
  176.   set the member of sprite the spritenum of me = member the hiliteMember of me
  177.   set the hiliteMember of me = temp
  178.   
  179. end
  180.  
  181. on mouseUpOutside me
  182.   set tracking = FALSE
  183.   set temp = the member of sprite the spritenum of me
  184.   set the member of sprite the spritenum of me = member the hiliteMember of me
  185.   set the hiliteMember of me = temp
  186.   
  187. end
  188.  
  189.  
  190.  
  191.